package com.qf.service.impl;

import com.qf.pojo.Order;
import com.qf.service.OrderService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Value;


import java.util.ArrayList;
import java.util.List;

//@Service

/**
 *  ① 向spring容器中注入两个对象
 *      一个是 OrderServiceImpl 业务对象
 *      一个是 ServiceBean 对象 在这个对象被创建后，会将当前这个服务的信息（内部服务的协议，ip，端口，接口信息）注册到zookeeper注册中心中
 *              暴露的方式是一个URL
 *  ② 导出服务到zookeeper注册中心后，内部会起一个服务。我们这里选择的是dubbo协议
 *      所以内部会基于netty启动一个服务，服务的端口是我们设置的20881，这个服务的作用就是等待消费端发起连接请求，获取订单列表数据的。
 */
@Service(timeout = 4000,version = "1.0")  //暴露服务到dubbo的注册中心。注意导包时，要使用的是dubbo包下的Service
public class OrderServiceImpl implements OrderService {

    @Value("${server.port}")
    private Integer port;

    @Override
    public List<Order> findByUid(Integer uid) throws InterruptedException {

        System.out.println("超时前的代码....." + port);

        if (port == 81){
            Thread.sleep(3000);
        }

        System.out.println("超时后的代码....." + port);

        //根据用户id，数据库查询用户的订单信息
        Order order1 = new Order(1,uid,1000d,"用户丁1:"+port);
        Order order2 = new Order(2,uid,2000d,"用户丁2:"+port);
        Order order3 = new Order(3,uid,3000d,"用户丁3:"+port);

        List<Order> orders = new ArrayList<>();
        orders.add(order1);
        orders.add(order2);
        orders.add(order3);

        return orders;
    }
}
